Empresas
Empleos
  • Sobre nosotros
  • Soluciones
    • Publicación de vacantes
      Publica tu vacante y recibe candidatos calificados en 48h.
    • Evaluación de candidatos
      500+ pruebas técnicas y psicológicas, más anti-fraude.
    • Headhunting
      Búsqueda ejecutiva a la medida de principio a fin.
    • Nómina + EOR
      Dispersión de nómina y EOR en más de 15 países de LATAM.
  • Precios
  • Empleos

0

283
Vistas
meteorito Cómo usar upsert | Excepción al simular el efecto de invocar "Error de tipo: no se pueden leer las propiedades de undefined (leyendo '_id') react.js

Tengo problemas con upsert con meteor.js. Podría actualizar las preguntas finamente con los códigos a continuación, pero no podré insertar nuevos datos.

archivo en el lado del cliente

 const onSave = () =>{ // there is more codes but omitted questions.forEach(question => { Meteor.call('modifyQuestion', question); }) }

archivo en el lado del servidor (archivo de colección)

 modifyQuestion(question) { check(question, Object); const questionId = Measures.findOne({questionId: question._id}); Measures.upsert( {_id: questionId._id}, { $set: { title: question.text, }, }, ); },

Obtuve un error que decía... Exception while simulating the effect of invoking 'modifyQuestion' TypeError: Cannot read properties of undefined (reading '_id')

Pensé que cuando {_id: questionId._id} no estaba definido, ese era el momento en que upsert comprendía que no se encontraron datos coincidentes e insertaba uno como datos nuevos en la base de datos. ¿Esto esta mal?

Cambié $set a $setOnInsert , pero aún así no funcionó...

ADICIONAL

Ahora no veo ningún error, pero no pude insertar nuevos datos. Podría actualizar los datos aunque.

 modifyQuestion(question) { check(question, Object); Measures.upsert( {questionId: question._id}, // changed { $set: { title: question.text, }, $setOnInsert: {type: 'multipleChoice'} }, ); },

También se eliminó const questionId = Measures..... parte

about 4 years ago · Juan Pablo Isaza
1 Respuestas
Responde la pregunta

0

Todavía necesita configurar el questionId en la inserción:

 modifyQuestion(question) { check(question, Object); Measures.upsert( { questionId: question._id }, { $set: { title: question.text, }, $setOnInsert: { questionId: question._id type: 'multipleChoice' } }, ); },

De lo contrario, nunca habrá un documento que contenga el ID de questionId .

Nota: Otra herramienta útil seríaCollection2 y define un esquema, por lo que genera errores, en caso de que se inserten/actualicen documentos que violen un esquema. El uso de esto habría arrojado que falta el ID de questionId en la inserción.

about 4 years ago · Juan Pablo Isaza Denunciar
Responde la pregunta
Encuentra empleos remotos

¡Descubre la nueva forma de encontrar empleo!

Top de empleos
Top categorías de empleo
Empresas
Publicar vacante Precios Comercial
Legal
Términos y condiciones Política de privacidad
© 2026 PeakU Inc. All Rights Reserved.
Andres GPT
Recomiéndame algunas ofertas
Necesito ayuda